package spectra.ee.web.api.model;

import java.util.Map;

import spectra.base.util.StringUtil;
import spectra.ee.web.WebPublic;
import spectra.ee.web.api.ApiPublic;

/**
 * 파라메터로 오는 데이터가 일반 key, value 인지, json 형태인지에 따라 각 파라메터를 파싱할수 있는
 * 클래스를 생성하여 리턴하는 팩토리 클래스
 * 
 * @author dhheo
 */
public class FormFactory
{
	public static ParameterForm create(Map parameterMap) throws Exception
	{
		//dataType 에 따라 일반 key, value 형태인지 json 형태인지, xml 형태인지(미지원)
    	String strParamDataType = (String)parameterMap.get(ApiPublic.PARAM_DATA_TYPE);
    	//값이 없으면 기본값이 key, value
    	ParameterForm paramForm = null;
    	if (StringUtil.isEmpty(strParamDataType))
    	{
    		paramForm = new AjaxForm(parameterMap);
    	}
    	else if (strParamDataType.equals("json"))
    	{
    		paramForm = new JsonForm(parameterMap);
    	} 
    	else if (strParamDataType.equals("xml"))
    	{
    		throw new Exception("ERROR : currently not supported data type! - " + strParamDataType);
    	}
    	else
    	{
    		throw new Exception("ERROR : currently not supported data type! - " + strParamDataType);
    	}
    	//파라메터로 넘어온 값들을 form 객체 형태로 만들어서 파라메터 객체에 담는다.
    	//paramForm.setForm(paramForm.bind());
    	return paramForm;
	}
}
